package client;

import model.FCEverritsen;
import model.person.Function;

public class Website {
	private FCEverritsen fc;

	public static void main(String[] args) {
		new Website();
	}

	private void init() {
		// Op verschillende plekken in onze applicatie wordt het iterator
		// pattern gebruikt om over lijsten te itereren
		// FCEverritsen is onze Facade en tevens een singleton
		fc = FCEverritsen.getInstance();
		// Bij het aanmaken van personen wordt de factorymethod gebruikt
		fc.createPerson("Dennis", "Gerritsen", 1000000, Function.Management);
		fc.createPerson("Rick", "Everink", -1000000, Function.Waswief,
				Function.Bartender);
		fc.createPerson("Milan", "Langeler");
		fc.createPerson("Sjaak", "Trekhaak", 100, Function.Referee);
		fc.createPerson("Thijs", "Bruins");
		fc.createOwnTeam("Team Knudde");
		fc.addPersonToTeam("Milan Langeler", "Team Knudde");
		fc.createOwnTeam("Team Boswinkel");
		fc.createOtherTeam("Team Away");
		fc.addPersonToTeam("Thijs Bruins", "Team Boswinkel");
		fc.addField("Hoofdveld", 100, false);
		fc.addMatch("Team Knudde", "Team Boswinkel", "Hoofdveld",
				"2013-04-03T12:30:00Z");
		fc.addBuilding("Clubgebouw", 150, 25);
		fc.addReservation("2012-04-02T12:00:00Z", "2012-04-02T14:00:00Z",
				"Dennis Gerritsen", "Clubgebouw", "Hoofdveld");
		fc.addGoal("Team Boswinkel", "2013-04-03T12:30:00Z");
		fc.addYellowCard("Team Knudde", "2013-04-03T12:30:00Z",
				"Milan Langeler");
		fc.addRedCard("Team Knudde", "2013-04-03T12:30:00Z", "Thijs Bruins");
		fc.addRefereeToMatch("Team Knudde", "2013-04-03T12:30:00Z",
				"Sjaak Trekhaak");
		fc.addBill(100, "2013-04-03T12:00:00Z", "Rick Everink");
		fc.addBill(150, "2013-04-04T18:00:00Z", "Rick Everink");
		fc.addBill(200000, "2013-04-04T11:00:00Z", "Milan Langeler");
		fc.handleBill("Rick Everink", "2013-04-03T12:00:00Z");
		fc.handleBill("Rick Everink", "2013-04-03T12:00:00Z");
		fc.archiveBill("Rick Everink", "2013-04-03T12:00:00Z");
		fc.handleBill("Rick Everink", "2013-04-04T18:00:00Z");
		fc.handleBill("Milan Langeler", "2013-04-04T11:00:00Z");
		fc.handleBill("Milan Langeler", "2013-04-04T11:00:00Z");

		// In het uitprinten van de Area's wordt het visitor pattern gebruikt
		fc.printAreaData();

		// In het uitprinten van de rekeningen wordt het state pattern gebruikt
		fc.printBillData();

		// In het uitprinten van de team data wordt gebruik gemaakt van het
		// strategy pattern
		fc.printTeamData();
	}

	public Website() {
		init();
	}
}
